3

CSS中居中的几种方式

1.水平居中margin:0 auto;块级元素在块级元素中居中设置在子元素上,前提是不受float影响
2.text-align只对行级元素有用,行级元素设置浮动,或者设置定位之后。给它的父元素设置text-aglin:center不会使它在父元素中居中
3.margin:0 auto对于已经定位的元素没有作用,已经定位的元素靠left和top定位
4.text-align只能让其div包含的行级元素中的文字或者是行块级元素中的文字水平居中
5.text-align这个属性只作用于文本元素,在p标签中在没有border的情况下,作用于让文本在div中居中,在文本有border**的情况下,作用于让文本内容在border范围内居中。这时若是想让p标签整体在div中居中,则需要设置margin:0 auto来达到居中效果
<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 300px;
            height: 300px;
            border:3px solid red;
            <!--1.text-align: center;-->
            /*1.对块级元素没有用,只对行级元素有用*/
            /*1.当img是行级元素时text-align起作用*/
        }
        img{
            /*2.display: block;*/
            width: 100px;
            height: 100px;
            /*2.margin: 0 auto;*/
        }
    </style>
</head>
<body>
<div class="box">
    <img src="../resources/2.jpg" alt="">
</div>
</body>

2.水平垂直居中
需要水平垂直居中的元素减去margin的宽高一半,这个方法同样适用于float的元素

<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 300px;
            height: 300px;
            border:3px solid red;
            position: relative;
        }
        img{
            /*display: block;*/
            <!--无论img是行级元素还是块级元素定位都能使元素水平垂直居中-->
            width: 100px;
            height: 100px;
            position: absolute;
            top:50%;
            <!--使元素到距离参照元素的下面的百分之五十-->
            left: 50%;
            <!--使元素到距离参照元素的左面的百分之五十-->
            <!--此时元素位于参照元素中心的左下角-->
            margin-top:-50px ;
            <!--因此将元素往上移自己高度的一半-->
            margin-left: -50px;
            <!--往左移自己宽度的一半-->
        }
    </style>
</head>
<body>
<div class="box">
    <img src="../resources/2.jpg" alt="">
</div>
</body>

margin-auto水平垂直居中

<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 300px;
            height: 300px;
            border:3px solid red;
            position: relative;
        }
        img{
            /*display: block;*/
            width: 100px;
            height: 100px;
            margin: auto;
            position: absolute;
            top:0;
            left: 0;
            right: 0;
            bottom: 0;
        }
    </style>
</head>
<body>
<div class="box">
    <img src="../resources/2.jpg" alt="">
</div>
</body>

水平垂直居中(三)
绝对定位和transfrom
很厉害的方式

<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 300px;
            height: 300px;
            border:3px solid red;
            position: relative;
        }
        img{
            width: 100px;
            height: 100px;
            position: absolute;
            top:50%;
            left: 50%;
            transform: translate(-50%,-50%);
        }
    </style>
</head>
<body>
<div class="box">
    <img src="../resources/2.jpg" alt="">
</div>
</body>

水平垂直居中(四)
利用C3的新特性flex,在移动端使用完美,pc端有兼容问题

<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 300px;
            height: 300px;
            border:3px solid red;
            display:flex;
            justify-content:center;
            align-items:center
        }
        img{
            width: 100px;
            height: 100px;
        }
    </style>
</head>
<body>
<div class="box">
    <img src="../resources/2.jpg" alt="">
</div>
</body>

lxjjjjjj
19 声望0 粉丝